// 测试算术类仿函数
#include <iostream>
#include <functional>

using namespace std;

int main()
{
    // 以下产生一些仿函数实体（对象）
    plus<int> plusobj;
    minus<int> minusobj;
    multiplies<int> multipliesobj;
    divides<int> dividesobj;
    modulus<int> modulusobj;
    negate<int> negateobj;

    // 以下运用上述对象，履行函数功能
    cout << plusobj(3, 5) << endl; // 8
    cout << minusobj(3, 5) << endl; // -2
    cout << multipliesobj(3, 5) << endl; // 15
    cout << dividesobj(3, 5) << endl; // 0
    cout << modulusobj(3, 5) << endl; // 3
    cout << negateobj(3) << endl; // -3

    // 以下直接以仿函数的临时对象履行函数功能
    cout << plus<int>()(3, 5) << endl;
    cout << minus<int>()(3, 5) << endl;
    cout << multiplies<int>()(3, 5) << endl;
    cout << divides<int>()(3, 5) << endl;
    cout << modulus<int>()(3, 5) << endl;
    cout << negate<int>()(3) << endl;

    return 0;
}